/**
 * Properties refer to P DPL 0 D 1 1 0
 * D = 1 (1 -> 32 bits ; 0 -> 16 bits)
 * P = 1 (1 -> present; 0 -> not present)
 * DPL  = 0 
 */
struct s_idt_table
{
	unsigned short offset_low;
	unsigned short segment_selector;
	unsigned char zero;
	unsigned char properties;
	unsigned short offset_high;
} __attribute__ ((packed)); 

struct s_idt
{
	unsigned short entries;
	unsigned int base_address;
} __attribute__ ((packed));

extern struct s_idt_table idt_table[256];
extern struct s_idt idt;

void div0();
void init_idt();
void setup_idt();

void int0();
void int1();
void int2();
void int3();
void int4();
void int5();
void int6();
void int7();
void int8();
void int9();
void int10();
void int11();
void int12();
void int13();
void int14();
void int15();
void int16();
void int17();
void int18();
void int19();
void int20();
void int21();
void int22();
void int23();
void int24();
void int25();
void int26();
void int27();
void int28();
void int29();
void int30();
void int31();
void int32();
void int33();
void int34();
void int35();
void int36();
void int37();
void int38();
void int39();
void int40();
void int41();
void int42();
void int43();
void int44();
void int45();
void int46();
void int47();
void int48();
void int49();
void int50();
void int51();
void int52();
void int53();
void int54();
void int55();
void int56();
void int57();
void int58();
void int59();
void int60();
void int61();
void int62();
void int63();
void int64();
void int65();
void int66();
void int67();
void int68();
void int69();
void int70();
void int71();
void int72();
void int73();
void int74();
void int75();
void int76();
void int77();
void int78();
void int79();
void int80();
void int81();
void int82();
void int83();
void int84();
void int85();
void int86();
void int87();
void int88();
void int89();
void int90();
void int91();
void int92();
void int93();
void int94();
void int95();
void int96();
void int97();
void int98();
void int99();
void int100();
void int101();
void int102();
void int103();
void int104();
void int105();
void int106();
void int107();
void int108();
void int109();
void int110();
void int111();
void int112();
void int113();
void int114();
void int115();
void int116();
void int117();
void int118();
void int119();
void int120();
void int121();
void int122();
void int123();
void int124();
void int125();
void int126();
void int127();
void int128();
void int129();
void int130();
void int131();
void int132();
void int133();
void int134();
void int135();
void int136();
void int137();
void int138();
void int139();
void int140();
void int141();
void int142();
void int143();
void int144();
void int145();
void int146();
void int147();
void int148();
void int149();
void int150();
void int151();
void int152();
void int153();
void int154();
void int155();
void int156();
void int157();
void int158();
void int159();
void int160();
void int161();
void int162();
void int163();
void int164();
void int165();
void int166();
void int167();
void int168();
void int169();
void int170();
void int171();
void int172();
void int173();
void int174();
void int175();
void int176();
void int177();
void int178();
void int179();
void int180();
void int181();
void int182();
void int183();
void int184();
void int185();
void int186();
void int187();
void int188();
void int189();
void int190();
void int191();
void int192();
void int193();
void int194();
void int195();
void int196();
void int197();
void int198();
void int199();
void int200();
void int201();
void int202();
void int203();
void int204();
void int205();
void int206();
void int207();
void int208();
void int209();
void int210();
void int211();
void int212();
void int213();
void int214();
void int215();
void int216();
void int217();
void int218();
void int219();
void int220();
void int221();
void int222();
void int223();
void int224();
void int225();
void int226();
void int227();
void int228();
void int229();
void int230();
void int231();
void int232();
void int233();
void int234();
void int235();
void int236();
void int237();
void int238();
void int239();
void int240();
void int241();
void int242();
void int243();
void int244();
void int245();
void int246();
void int247();
void int248();
void int249();
void int250();
void int251();
void int252();
void int253();
void int254();
void int255();

void irq_remap();

void add_idt_entry(unsigned int index, unsigned int address, 
                   unsigned short segment, unsigned char properties);

extern void __int0();
extern void __int1();
extern void __int2();
extern void __int3();
extern void __int4();
extern void __int5();
extern void __int6();
extern void __int7();
extern void __int8();
extern void __int9();
extern void __int10();
extern void __int11();
extern void __int12();
extern void __int13();
extern void __int14();
extern void __int15();
extern void __int16();
extern void __int17();
extern void __int18();
extern void __int19();
extern void __int20();
extern void __int21();
extern void __int22();
extern void __int23();
extern void __int24();
extern void __int25();
extern void __int26();
extern void __int27();
extern void __int28();
extern void __int29();
extern void __int30();
extern void __int31();
extern void __int32();
extern void __int33();
extern void __int34();
extern void __int35();
extern void __int36();
extern void __int37();
extern void __int38();
extern void __int39();
extern void __int40();
extern void __int41();
extern void __int42();
extern void __int43();
extern void __int44();
extern void __int45();
extern void __int46();
extern void __int47();
extern void __int48();
extern void __int49();
extern void __int50();
extern void __int51();
extern void __int52();
extern void __int53();
extern void __int54();
extern void __int55();
extern void __int56();
extern void __int57();
extern void __int58();
extern void __int59();
extern void __int60();
extern void __int61();
extern void __int62();
extern void __int63();
extern void __int64();
extern void __int65();
extern void __int66();
extern void __int67();
extern void __int68();
extern void __int69();
extern void __int70();
extern void __int71();
extern void __int72();
extern void __int73();
extern void __int74();
extern void __int75();
extern void __int76();
extern void __int77();
extern void __int78();
extern void __int79();
extern void __int80();
extern void __int81();
extern void __int82();
extern void __int83();
extern void __int84();
extern void __int85();
extern void __int86();
extern void __int87();
extern void __int88();
extern void __int89();
extern void __int90();
extern void __int91();
extern void __int92();
extern void __int93();
extern void __int94();
extern void __int95();
extern void __int96();
extern void __int97();
extern void __int98();
extern void __int99();
extern void __int100();
extern void __int101();
extern void __int102();
extern void __int103();
extern void __int104();
extern void __int105();
extern void __int106();
extern void __int107();
extern void __int108();
extern void __int109();
extern void __int110();
extern void __int111();
extern void __int112();
extern void __int113();
extern void __int114();
extern void __int115();
extern void __int116();
extern void __int117();
extern void __int118();
extern void __int119();
extern void __int120();
extern void __int121();
extern void __int122();
extern void __int123();
extern void __int124();
extern void __int125();
extern void __int126();
extern void __int127();
extern void __int128();
extern void __int129();
extern void __int130();
extern void __int131();
extern void __int132();
extern void __int133();
extern void __int134();
extern void __int135();
extern void __int136();
extern void __int137();
extern void __int138();
extern void __int139();
extern void __int140();
extern void __int141();
extern void __int142();
extern void __int143();
extern void __int144();
extern void __int145();
extern void __int146();
extern void __int147();
extern void __int148();
extern void __int149();
extern void __int150();
extern void __int151();
extern void __int152();
extern void __int153();
extern void __int154();
extern void __int155();
extern void __int156();
extern void __int157();
extern void __int158();
extern void __int159();
extern void __int160();
extern void __int161();
extern void __int162();
extern void __int163();
extern void __int164();
extern void __int165();
extern void __int166();
extern void __int167();
extern void __int168();
extern void __int169();
extern void __int170();
extern void __int171();
extern void __int172();
extern void __int173();
extern void __int174();
extern void __int175();
extern void __int176();
extern void __int177();
extern void __int178();
extern void __int179();
extern void __int180();
extern void __int181();
extern void __int182();
extern void __int183();
extern void __int184();
extern void __int185();
extern void __int186();
extern void __int187();
extern void __int188();
extern void __int189();
extern void __int190();
extern void __int191();
extern void __int192();
extern void __int193();
extern void __int194();
extern void __int195();
extern void __int196();
extern void __int197();
extern void __int198();
extern void __int199();
extern void __int200();
extern void __int201();
extern void __int202();
extern void __int203();
extern void __int204();
extern void __int205();
extern void __int206();
extern void __int207();
extern void __int208();
extern void __int209();
extern void __int210();
extern void __int211();
extern void __int212();
extern void __int213();
extern void __int214();
extern void __int215();
extern void __int216();
extern void __int217();
extern void __int218();
extern void __int219();
extern void __int220();
extern void __int221();
extern void __int222();
extern void __int223();
extern void __int224();
extern void __int225();
extern void __int226();
extern void __int227();
extern void __int228();
extern void __int229();
extern void __int230();
extern void __int231();
extern void __int232();
extern void __int233();
extern void __int234();
extern void __int235();
extern void __int236();
extern void __int237();
extern void __int238();
extern void __int239();
extern void __int240();
extern void __int241();
extern void __int242();
extern void __int243();
extern void __int244();
extern void __int245();
extern void __int246();
extern void __int247();
extern void __int248();
extern void __int249();
extern void __int250();
extern void __int251();
extern void __int252();
extern void __int253();
extern void __int254();
extern void __int255();


